home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
B-Book Series
/
(k)b9.d64
/
c64symb.merlin
< prev
next >
Wrap
Text File
|
2007-02-28
|
22KB
|
858 lines
*+------------------------------------------------+
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*!ááááááá****ááCOMMODOREá64ááCOMAL-80áá******ááááá!
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*!ááááááá(C)áCOPYRIGHTáUNICOMALáAPSáá1983,á1984ááá!
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*!ááC64SYMBáFORáCOMMODOREá64ááCOMAL-80áREV.á2.01áá!
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*!áááááááááááááááááááááááááááááááááááááááááááááááá!
*+------------------------------------------------+
PAGE0 = %11100000 ;NOáEXPANSION
PAGE1 = %10000000 ;CARTRIDGEáOVERLAYá1á($8000-$BFFF)
PAGE2 = %10000001 ;CARTRIDGEáOVERLAYá2á($8000-$BFFF)
PAGE3 = %10000010 ;CARTRIDGEáOVERLAYá3á($8000-$BFFF)
PAGE4 = %10000011 ;CARTRIDGEáOVERLAYá4á($8000-$BFFF)
PAGE5 = %10000100 ;CARTRIDGEáOVERLAYá5á($8000-$BFFF)
PAGE6 = %10000101 ;CARTRIDGEáOVERLAYá6á($8000-$BFFF)
PAGEA = PAGE2 ;COMALáPAGEáA
PAGEB = PAGE3 ;COMALáPAGEáB
PAGEC = PAGE1 ;COMALáPAGEáC
*áááPAGEáZEROáVARIABLES:
ast 56
DUM $0000
D6510 DS 1 ;6510áON-CHIPáDATA-DIRECTIONáREGISTER
R6510 DS 1 ;6510áON-CHIPá6-BITáI/O/MAP-REGISTER:
LORAM = %00000001 ;ááCONTROLáFORáRAM/ROMáATá$A000-$BFFFá(BASIC)
HIRAM = %00000010 ;ááCONTROLáFORáRAM/ROMáATá$E000-$FFFFá(KERNAL)
CHAREN = %00000100 ;ááCONTROLáFORáI/O/ROMáATá$D000-$DFFF
NORM = %00110111 ;ááCOMALáMEMORYáMAP
PRPROC DS 3 ;CHAINáOFáLOCALáNAMESá(PREPASS)
INTEGR DS 1 ;FPáWORK
*áMEMORYáMAPáCONTROL
PAGE DS 1 ;CURRENTáMEMORYáMAP
CM8096 = PAGE
MEMMAP = PAGE
PAGEPT DS 2 ;POINTERáUSEDáBYáLOAD/STORE/EXEC
PAGEX DS 1 ;OVERLAYáFORáLOAD/STORE/EXECáROUTINES
PAGEY DS 1 ;OVERLAYáUSEDáFORáCONTROLáOFáJUMPáTABLE
P6510 DS 1 ;OLDáC64-OVERLAYáFORáCONTROLáOFáJUMPáTABLE
RESOL DS 1 ;GRAPHICSáRESOLUTION
GCOLH DS 1 ;GRAPHICSáPENCOLOR*16
*áCOMALáVARIABLES
LOCLPT DS 2 ;CHAINáOFáOLDáVARIABLEáDESCRIPTIONS
FORPT DS 2 ;STACKáENTRYáCHAIN
SCTYPE DS 1 ;TYPEáOFáSYMBOLáFROMáSCANNER
TANSGN DS 1 ;TANáSIGNá/áCOMPARISONáEVALUATIONáFLAG
CODE DS 1 ;USEDáTOáHOLDáAáGENERATEDáCODE
CPNT DS 1 ;POINTERáTOáCODEáBUFFER,áCDBUF
CLIMIT = 255 ;LIMITáOFáCPNT
SPROG DS 2 ;PNTáTOáSTARTáOFáPROGRAM
SVARS DS 2 ;PNTáTOáSTARTáOFáVARIABLEáTABLE
SSTACK DS 2 ;PNTáTOáSTARTáOFáSTACK
SMAX DS 2 ;PNTáTOáTOPáOFáMEMORY
EXINF DS 1 ;INFáFORáRESULTáEXPRESSIONáFROMáEXPR
SCERR = $01
SCLNO = $08 ;SET,áIFáNUMBERáCANáBEáAáLINEáNUMBER
LNLEN DS 1 ;LENGTHáOFáLINEáTOáBEáEXECUTED
NPNT DS 1 ;POINTERáTOáNAME
TPNT DS 1 ;POINTERáTOáSTRING
TLIMIT = 80
INDEX1 DS 2 ;UTILITYáPOINTER
INDEX2 DS 2 ;UTILITYáPOINTER
INDEX = INDEX1
RESM1 DS 1 ;PRODUCTáAREAáFORáMULTIPLICATION
RESM2 DS 1
RESM3 DS 1
RESM4 DS 1
RESM5 DS 1
MULT1 = RESM1 ;FIRSTáOPERANDá(MULT)
MULT2 = RESM3 ;SECONDáOPERANDá(MULT)
DATAPT DS 2 ;CURRENTáDATAáPOINTER
STOS DS 2 ;PNTáTOáTOPáOFáSTACK
SFREE DS 2 ;PNTáTOáFREEáAREAáOFáVAR.RES
PRGPNT DS 2 ;PNTáTOáSTARTáOFáLINE
CODPNT DS 1 ;PNTáTOáCODEáDURINGáEXECUTION
SCLSD1 DS 2 ;OLDáSFREEá(CLOSED)
SCLSD2 DS 2 ;OLDáSTOSáá(CLOSED)
INF1 DS 1
INF2 DS 1 ;USEDáFORáOPERANDáCHECKING
INF3 DS 1
Q1 DS 2 ;SHORTáSPANáWORKáAREAS
Q2 DS 2
Q3 DS 2
Q4 DS 2
Q5 DS 2
COPY1 DS 2 ;WORKáFORáCOPY:áFROM
COPY2 DS 2 ;áááááááááááááááTO
FDECPT = COPY2 ;CURRENTáVARIABLEáADDRESSá(DECáPOINTER)
COPY3 DS 2 ;áááááááááááááááLENGTH
BUS DS 1 ;BUS=á0:áBUSáIDLE;áBUS<>0:áBUSáACTIVE
STINF DS 1 ;INFORMATIONáFORáSTATEMENT:
CMND = $01 ;ááNOáLINEáNUMBER
TWOST = $02 ;ááANOTHERáSTATEMENTáFOLLOWS
WHLDO = $04 ;ááAFTERáWHILEá...áDO
FORDO = $08 ;ááAFTERáFORá...áDO
COMMNT = $10 ;ááSTATEMENTáENDEDáBYáCOMMENT
IFTHEN = $20 ;ááAFTERáIFá...áTHEN
REPUNT = $40 ;ááAFTERáREPEATá...áUNTIL
EXCINF DS 1 ;EXECUTIONáINFORMATION:
ESCTRP = $02 ;ááESCAPEáISáTRAPPEDá(STOP)
SRQ = $04 ;ááMAKEáCALLáOFáCOMALáINTERRUPTáHANDLER.
ESCMET = $08 ;ááESCAPEáMETá(STOP)
SRQON = $10 ;ááSRQáENABLED
USRQON = $20 ;ááUSERáREQUESTáENABLED
SFTSRQ = $80 ;ááSOFTWAREáSRQáONLY
*áVARIABLESáFORáFLOATINGáPOINTáPACKAGES
TEMPF3 DS 6 ;MISC.áFPáWORKáAREA
ESCAPE DS 1 ;STOPáKEYáFLAG
DS 1 ;NOTáUSED
OLDOV DS 1 ;OLDáOVERFLOWá(ROUNDING)
TEMPF1 DS 5 ;MISC.áFPáWORKáAREAá(5áBYTES)
TEMPF2 DS 5 ;MISC.áFPáWORKáAREAá(5áBYTES)
DECCNT = TEMPF2+1
TENEXP = TEMPF2+2
AC1 DS 6 ;ACCUM#1:
AC1E = AC1+0 ;ááEXPONENT
AC1M1 = AC1+1 ;ááMANTISSAá1
AC1M2 = AC1+2 ;ááMANTISSAá2
AC1M3 = AC1+3 ;ááMANTISSAá3
AC1M4 = AC1+4 ;ááMANTISSAá4
AC1S = AC1+5 ;ááSIGN
DEGREE DS 1 ;SERIESáEVALUATIONáCONSTANTáPOINTER
BITS DS 1 ;ACCUM#1:áHI-ORDERá(OVERFLOW)
AC2 DS 6 ;ACCUM#2:
AC2E = AC2+0 ;ááEXPONENT
AC2M1 = AC2+1 ;ááMANTISSAá1
AC2M2 = AC2+2 ;ááMANTISSAá2
AC2M3 = AC2+3 ;ááMANTISSAá3
AC2M4 = AC2+4 ;ááMANTISSAá4
AC2S = AC2+5 ;ááSIGN
ARISGN DS 1 ;SIGNáCOMPARISON,áACC#1áVSáACC#2
FACOV DS 1 ;ACCUM#1:áLO-ORDERá(ROUNDING)
POLYPT DS 2 ;POINTERáTOáPOLYNOM.
FBUFPT = POLYPT
*áMOREáCOMALáVARIABLES
ASAVE DS 1 ;SAVEáFORá.Aá(CALL/GOTO)
XSAVE DS 1 ;SAVEáFORá.Xá(CALL/GOTO)
PSAVE DS 1 ;SAVEáFORá.Pá(CALL/GOTO)
INDPNT DS 1 ;POINTERáTOáLASTáCODEáWHEREáANáADDRESSáWASáLOADED
SCFLAG DS 1 ;FLAGSáINáSCANNER:
LNNO DS 2 ;LINEáNUMBER
MOVEAD DS 2 ;ADDRESSáFORáMOVE
TXTLO DS 1 ;ADDRESSáOFáTEXTáFORáPRTXT
TXTHI DS 1
XX DS 2 ;CURRENTáXá(GRAPHICS)
YY DS 2 ;CURRENTáYá(GRAPHICS)
GRWK1 DS 2
GRWK2 DS 2
GRWK3 DS 2
EXCFLG DS 1 ;FLAGS:
NWNAME = $01 ;áNEWáNAMEáHASáBEENáINSERTED
NWLINE = $02 ;áNEWáLINEáHASáBEENáINSERTED
CHARPT DS 1 ;áPNTáTOáINBUF
CHAR DS 1 ;áCHARáFROMáINCHAR
RNDX DS 5 ;áRANDOMáNUMBERáSEED
*áVARIABLESáFORáI/O
STATUS DS 1 ;I/OáOPERATIONáSTATUS
STKEY DS 1 ;STOPáKEYáFLAG
SVXT DS 1 ;TEMPORARY
VERCK DS 1 ;LOADáORáVERIFYáFLAG
C3P0 DS 1 ;IEEEáBUFFEREDáCHARáFLAG
BSOUR DS 1 ;CHARáBUFFERáFORáIEEE
SYNO DS 1 ;CASSETTEáSYNCá#
XSAV DS 1 ;TEMPáFORáBASIN
LDTND DS 1 ;HOWáMANYáFILESáOPEN
DFLTN DS 1 ;DEFAULTáINPUTáDEVICEá#
DFLTO DS 1 ;DEFAULTáOUTPUTáDEVICEá#
PRTY DS 1 ;CASSETTEáPARITY
T3 = PRTY
DPSW DS 1 ;CASSETTEáDIPOLEáSWITCH
MSGFLG DS 1 ;OSáMESSAGEáFLAG
PTR1 DS 1 ;CASSETTEáERRORáPASSá1
T1 = PTR1 ;TEMPORARYá1
PTR2 DS 1 ;CASSETTEáERRORáPASSá2
TMPC = PTR2
T2 = PTR2 ;TEMPORARYá2
TIME DS 3 ;24áHOURáCLOCKáINá1/60áSEC.
R2D2 = * ;SERIALáBUSáUSAGE
PCNTR DS 1 ;CASSETTEáSTUFF
BSOUR1 = * ;TEMPáUSEDáBYáSERIALáROUTINE
FIRT DS 1
COUNT = * ;TEMPáUSEDáBYáSERIALáROUTINE
CNTDN DS 1 ;CASSETTEáSYNCáCOUNTDOWN
BUFPT DS 1 ;TAPEáBUFFERáPOINTER
SHCNL = * ;CASSETTEáSHORTáCOUNT
INBIT DS 1 ;RS232áRCVRáINPUTáBITáSTORAGE
RER = * ;CASSETTEáREADáERROR
BITCI DS 1 ;RS232áRCVRáBITáCOUNTáIN
REZ = * ;CASSETTEáREADINGáZEROES
RINONE DS 1 ;RS232áRCVRáFLAGáFORáSTARTáBITáCHECK
RDFLG = * ;CASSETTEáREADáMODE
RIDATA DS 1 ;RS232áRCVRáBYTEáBUFFER
RIPRTY DS 1 ;RS232áRCVRáPARITYáSTORAGE
SHCNH = RIPRTY ;CASSETTEáSHORTáCOUNT
SAL DS 1 ;POINTER:áTAPEáBUFFER/SCREENáSCROLLING
SAH DS 1
EAL DS 1
EAH DS 1
CMP0 DS 1 ;TAPEáTIMINGáCONSTANT
TEMP DS 1 ;TAPEáTIMINGáCONSTANT
TAPE1 DS 2 ;STARTáOFáTAPEáBUFFER
SNSW1 = * ;CASSETTEáSTUFF
BITTS DS 1 ;RS232áTRNSáBITáCOUNT
NXTBIT DS 1 ;RS232áTRNSáNEXTáBITáTOáBEáSENT
DIFF = NXTBIT ;EOTáRECEIVEDáFROMáTAPE
PRP = *
RODATA DS 1 ;RS232áTRNSáBYTEáBUFFER
FNLEN DS 1 ;LENGTHáOFáCURRENTáFILEáNAME
LA DS 1 ;CURRENTáFILEáLOGICALáADDRESS
SA DS 1 ;CURRENTáFILEáSECONDARYáADDRESS
FA DS 1 ;CURRENTáFILEáPRIMARYáADDRESS
FILADR DS 2 ;CURRENTáFILEáNAMEáADDRESS
OCHAR = *
ROPRTY DS 1 ;RS232áTRNSáPARITYáBUFFER
FSBLK DS 1 ;CASSETTEáREADáBLOCKáCOUNT
MYCH DS 1 ;SERIALáWORDáBUFFER
CAS1 DS 1 ;CASSETTEáMANUAL/CONTROLLEDáSWITCH
STAL DS 1 ;TAPEáSTARTáADDRESS
STAH DS 1
TMP2 = *
MEMUSS DS 2 ;TAPEáLOADáTEMPS
*áVARIABLESáFORáSCREENáEDITOR
LSTX DS 1 ;KEYáSCANáINDEX
NEWKEY = LSTX
NDX DS 1 ;KEYáBUFFERáPOINTER
RVS DS 1 ;REVERSEáFIELDáONáFLAG
INDX DS 1 ;BYTEáPOINTERáTOáENDáOFáLINEáFORáINPUT
LSXP DS 1 ;STARTáOFáSCREENáINPUTá(ROW)
LSTP DS 1 ;STARTáOFáSCREENáINPUTá(COLUMN)
SFDX DS 1 ;SHIFTáMODEáONáPRINT
BLNSW DS 1 ;CURSORáBLINKáENABLE
BLNCT DS 1 ;COUNTERáTOáFLIPáCURSOR
GDBLN DS 1 ;OLDáCHARáBEFOREáBLINK
BLNON DS 1 ;ON/OFFáBLINKáFLAG
CRSW DS 1 ;INPUT/GETáFLAG
PNT DS 2 ;POINTERáTOáSTARTáOFáLINEáWHERE
CURLIN = PNT ;CURSORáISáFLASHING.
PNTR DS 1 ;COLUMNáPOSITIONáWHEREáCURSOR
COLPOS = PNTR ;ISáFLASHING.
QTSW DS 1 ;FLAGáFORáQUOTEáMODE
QUOTE = QTSW
LNMX DS 1 ;CURRENTáSCREENáLINEáLENGTHá(39/79)
TBLX DS 1 ;LINEáNUMBERáWHEREáCURSORáISáFLASHING
ROWPOS = TBLX
DATA DS 1 ;TEMPáDATAáAREA
INSRT DS 1 ;NUMBERáOFáINSERTáKEYSáPUSHEDáTOáGO
WRPTB DS 26 ;LINEáFLAGS+ENDSPACE
LDTB1 = WRPTB
USER DS 2 ;SCREENáEDITORáCOLORáPOINTER
KEYTAB DS 2 ;KEYBOARDáDECODEáTABLE
RIBUF DS 2 ;RS232áINPUTáBUFFERáADDRESS
ROBUF DS 2 ;RS232áOUTPUTáBUFFERáADDRESS
FREKZP DS 5 ;FREEáKERNALáZ-PAGEáSPACE
*áENDáOFáPAGEáZERO
STACK DS 256 ;SYSTEMáSTACK
FBUFFR = STACK ;FPASCáWORKáAREAá(15áBYTES)
BAD = STACK ;TAPEáINPUTáERRORáLOG
ERTLEN DS 1 ;LENGTHáOFáERTEXT
MAXERT = 79 ;MAX.áLENGTHáOFáERTEXT
ERTEXT DS MAXERT ;BUFFERáTOáHOLDáERRORáMESSAGE
*áSTORAGEáFORáCONáCOMMAND:
CONPNT DS 2 ;OLDáPRGPNT
CONFLG DS 1 ;OLDáEXCINF
CONCOD DS 1 ;OLDáCODPNT
CONFOR DS 2 ;OLDáFORPT
FPWORK DS 1
EXTROM DS 1 ;EXTERNALáROMáFLAGá(0=áNO,á'I'=áYES)
IEEEIN DS 1 ;IEEEáINSTALLEDáááá(0=áNO,á'I'=áYES)
LAT DS 10 ;TABLEáOFáLA'S
FAT DS 10 ;TABLEáOFáFA'S
SAT DS 10 ;TABLEáOFáSA'S
KEYBUF DS 10 ;KEYBOARDáBUFFERáQUEUEá(FIFO)
MEMSTR DS 2 ;STARTáOFáMEMORY
MEMSIZ DS 2 ;TOPáOFáMEMORY
TIMOUT DS 1 ;IEEEáTIMEáOUTáDEFEAT
*áSCREENáEDITORáSTORAGE
COLOR DS 1 ;ACTIVEáCOLORáNYBBLE
GDCOL DS 1 ;ORIGINALáCOLORáUNDERáCURSOR
HIBASE DS 1 ;BASáLOCATIONáOFáSCREEN
KBFLIM DS 1 ;SIZEáOFáKEYBOARDáBUFFER
RPTFLG DS 1 ;KEYáREPEATáFLAG
RPTCNT DS 1 ;REPEATáSPEEDáCOUNTER
DELAY DS 1 ;REPEATáDELAYáCOUNTER
SHFLAG DS 1 ;KEYBOARDáSHIFTáKEY/CTRLáKEY/C=ááKEY
LSTSHF DS 1 ;LASTáKEYBOARDáSHIFTáPATTERN
KEYLOG DS 2 ;VECTOR:áKEYBOARDáTABLEáSETUP
SHMODE DS 1 ;0=áPETáMODE,á1=áCATTACANNA
AUTODN DS 1 ;AUTOáSCROLLáDOWN,á0=áON
*áRS232áSTORAGE
M51CTR DS 1 ;6551áCONTROLáREGISTERáIMAGE
M51CDR DS 1 ;6551áCOMMANDáREGISTERáIMAGE
M51AJB DS 2 ;NON-STANDARDáBPSá(TIME/2-100)áUSA
RSSTAT DS 1 ;6551áSTATUSáREGISTER
BITNUM DS 1 ;NUMBERáOFáBITSáLEFTáTOáSEND
BAUDOF DS 2 ;BAUDáRATE:áFULLáBITáTIMEá(MICROSEC)
RIDBE DS 1 ;INDEXáTOáENDáOFáINPUTáBUFFER
RIDBS DS 1 ;STARTáOFáINPUTáBUFFERá(PAGE)
RODBS DS 1 ;STARTáOFáOUTPUTáBUFFERá(PAGE)
RODBE DS 1 ;INDEXáTOáENDáOFáOUTPUTáBUFFER
IRQTMP DS 2 ;HOLDSáIRQ-VECTORáDURINGáTAPEáI/O
*áTEMPáSPACEáFORáC64áVARIABLES
ENABL DS 1 ;RS232áENABLES
CASTON DS 1 ;TODáSENSEáDURINGáCASSETTEáI/O
KIKA26 DS 1 ;TEMPáSTORAGEáFORáCASSETTEáREAD
STUPID DS 1 ;TEMPáD1IRQáINDICATORáFORáCASSETTEáREAD
LINTMP DS 1 ;TEMPáFORáLINEáINDEX
PALNTS DS 1 ;FLAG:á0=áNTSC,á1=áPAL
FNMAX = 55
FILNAM DS FNMAX ;USEDáFORáSTORAGEáOFáFILEáNAME
TBUFF = FILNAM ;USEDáFORáSTORAGEáOFáDISCáCOMMAND
RANGNO DS 1 ;LINEá#áRANGEáPOINTER
RANGPT DS 1 ;LINEá#áRANGEáPOINTER
RANGMX = 32
RANGES DS RANGMX ;LINEá#áRANGES
IERROR DS 2 ;VECTOR:áPRINTáBASICáERRORáMESSAGE
NUMBER = TEMPF3 ;FPáWORKáAREAá(SYNTAXáANALYSIS)
DS 5 ;NOTáUSED
NUM2 DS 5 ;FPáWORKáAREAá(PRINTáUSING)
SAREG DS 8 ;UNUSED
*áKERNALáVECTORS:
CINV DS 2 ;IRQáRAMáVECTOR
IRQVCT = CINV
CBINV DS 2 ;BRKáINSTRáRAMáVECTOR
BRKVCT = CBINV
NMIVCT DS 2 ;NMIáRAMáVECTOR
IOPEN DS 2 ;OPENáROUTINEáVECTOR
ICLOSE DS 2 ;CLOSEáROUTINEáVECTOR
ICHKIN DS 2 ;CHKINáROUTINEáVECTOR
ICKOUT DS 2 ;CKOUTáROUTINEáVECTOR
ICLRCH DS 2 ;CLRCHNáROUTINEáVECTOR
IBASIN DS 2 ;CHRINáROUTINEáVECTOR
IBSOUT DS 2 ;CHROUTáROUTINEáVECTOR
ISTOP DS 2 ;STOPáROUTINEáVECTOR
IGETIN DS 2 ;GETINáROUTINEáVECTOR
ICLALL DS 2 ;CLALLáROUTINEáVECTOR
USRCMD DS 2 ;FORáMACHINEáLANGUAGEáMONITOR
ILOAD DS 2 ;LOADáROUTINEáVECTOR
ISAVE DS 2 ;SAVEáROUTINEáVECTOR
DS 8 ;UNUSED
TBUFFR DS 192 ;TAPEáI/OáBUFFER
DS 4 ;UNUSED
SCSIZE = 1000 ;SCREENáSIZE
SCREEN DS SCSIZE ;SCREENáMEMORYáAREA
DS 16 ;SCREENáMEMORYáEXCESS
SPRPNT DS 8 ;SPRITEáDATAáPOINTERS
*áCOMALáPROGRAMáFOLLOWSáHERE:
MBEGIN DS 4 ;STARTáOFáMEMORY
MBEGN1 DS 1 ;STARTáOFáNAMEáTABLE
MBEGN2 DS 1 ;STARTáOFáSTACKS
*áSTARTáHEREáTOáPUTáBUFFERS,áVARIABLES,áANDáJUMPáTABLE
ORG $C000
RSIBUF DS 256 ;RS232áINPUTáBUFFER
RSOBUF DS 256 ;RS232áOUTPUTáBUFFER
STDPCK DS 1000 ;VARIABLESáFORáSTANDARDáPACKAGES
INLEN = 121
INBUF DS INLEN ;INPUTáBUFFER
CDBUF DS CLIMIT ;CODEáBUFFER
TXT DS TLIMIT ;STRINGáCONSTANTáBUFFER
TXT1 = TXT-1
FLEVEL DS 1 ;FOR/TRAPáNESTINGáLEVELáDURINGáPREPASS
Q6 DS 2 ;TEMPORARY
Q7 DS 2 ;TEMPORARY
Q8 DS 2 ;TEMPORARY
Q9 DS 2 ;TEMPORARY
DS 3 ;UNUSED
MOVELN = MULT1
MOVETY = MULT2
SPSAV DS 1 ;SAVEáOFá.SáDURINGáEXECUTION
SCINF DS 2 ;NAMEáPOINTER
PSTART = *
AUTO1 DS 2 ;CURRENTáLINEáNUMBERáFORáAUTO
AUTOST DS 2 ;STEPáFORáAUTO
DSTART DS 2 ;STARTáOFáDATAáQUEUE
TABSET DS 1 ;VALUEáOFáLASTáZONEáSTATEMENT
ALTPOS DS 1 ;POSITIONáINáSELECTáOUTPUTáFILE
INTRNO DS 2 ;PROCEDUREáGIVENáBYáINTERRUPTáSTMT.
PEND = *
ERRPNT DS 1 ;CHARáPOSáOFáERROR
NORINT DS 2 ;NORMALáINTERRUPTáVECTOR
SAFE DS 1 ;SAFEáSTATUS
MAINRV DS 1 ;MAINáREVISION
SUBRV DS 1 ;SUBáREVISION
TESTRV DS 1 ;TESTáVERSION
MSGLIN DS 2 ;ADDRESSáOFáMESSAGEáLINE
UPPER2 DS 1 ;COPYáOFáBORGE
EXTPRC DS 1 ;FLAGáFORáLOADINGáOFáEXTERNALáPROC/FUNC
EXTCNT DS 2 ;NESTINGáLEVELáOFáEXTERNALáPROC/FUNC
SSIZE DS 1 ;40áCOL./80áCOL.
LUNIT DS 1 ;LASTáDISCá(STATUS)
BORGE DS 1 ;SPECIALáFLAGSáFORáLISTING
OPENFL DS 1 ;FLAGáUSEDáBYáCOPEN
DFUNLN DS 1 ;LENGTHáOFáDEFAULTáUNITáTEXT
DFUNIT DS 2 ;DEFAULTáUNITá(POWERáUPáVALUE:á.BYTEá'0')
DEFOUT DS 1 ;SELECTáOUTPUTáFLAG
IOVECT = * ;VECTORS:
TRAPVC DS 2 ;ááPAGEB;áERRORáHANDLER
EXTNVC DS 2 ;ááPAGEB;áEXTERNALáLOAD
USRQVC DS 2 ;ááPAGEB;áINTERRUPTáFACILITY
IERTXT DS 3 ;áááááááááERRORáMESSAGEáDATA
IGETLN DS 2 ;ááPAGEA;áINPUTáCOMMANDáLINE
ISAVEC DS 2 ;ááPAGEC;áSAVEáADDITIONALáINFO
ILOADC DS 2 ;ááPAGEC;áLOADáADDITIONALáINFO
IFNKEY DS 2 ;ááPAGEA;áHANDLEáFUNCTIONáKEYS
LIBPT DS 1 ;PTRáTOáPLACEáFORáNEXTáLIBRARYáDESCRIPTION
LIBLEN = 10 ;NO.áOFáLIBRARYáDESCRIPTIONS
LIBLO DS LIBLEN
LIBHI DS LIBLEN
LIBPAG DS LIBLEN
*ááOPENáFILEáMODESá(COPENá&áCFNAME):
MREAD = 1 ;READ
MWRITE = 2 ;WRITE
MREL = 4 ;RELATIVEá(RANDOM)
*ááFILEáATTRIBUTESá(COPEN):
MDISK = 8 ;DISKáFILE
MS = 16 ;SECONDARYáADDRESSáSELECTION
ML = 32 ;AUTOáLINEFEED
MT = 64 ;TIMEáOUT
MA = 128 ;ASCIIáI/O
*ááFILEáTYPESá(CFNAME):
TAPPND = 8
TPRG = 16
TSEQ = TPRG+TPRG
TREL = TSEQ+TPRG
TUSR = TREL+TPRG
MODET DS 10 ;OPENáMODEáFORáFILES
COUNTT DS 10 ;TABLEáOFáBYTEáCOUNTáFORáFILES
STT DS 10 ;STATUSáFORáOPENEDáFILES
RECOTL DS 10 ;TABLEáOFáRECORDáPOS.áFORáFILES
RECOTH DS 10
PPAGE DS 1 ;OVERLAYáTOáPEEK/POKE/SYS
NOREST DS 1 ;<>0:áDISABLEáSTOP/RESTORE
LOADIN DS 1 ;<>0:áLOADINGáCOMALáPROGRAM
UNITFL DS 1 ;0:áSIMP.DEV;á1:áDRIVE;á2:áCASSETTE
MODE DS 1 ;FILEáMODE
CSTAT DS 1 ;STATUSáOFáCOMALáPROGRAM
*ááá1:áINPUTáANALYSISáFROMáSCREEN
*ááá2:ááá-ááááááá-áááááá-ááFILE
*ááá3:áPREPASSING
*ááá4:áEXECUTINGáAáCOMMAND
*ááá5:áEXECUTINGáPROGRAM
LSTFLG DS 1 ;BITáVECTORáFORáRCREAT:
ININD = $01
OUTIND = $02
LSTCON = $04
NOIND = $08
LSTEXT = $10
LPMODE DS 1 ;DEFAULTáPRINTERáOPENáMODE
LPSA DS 1 ;DEFAULTáPRINTERáSECONDARYáADDRESS
LPFA DS 1 ;DEFAULTáPRINTERáUNIT
RECDEL DS 1 ;RECORDáPOSITIONINGáDELAY
ENDADR DS 2 ;TOPáOFáRAM
HEADLN DS 1 ;POWERáONáMESSAGEáFLAG
KWTAB DS 2 ;KEYWORDáTABLEá(PAGEA)
DFBORD DS 1 ;DEFAULTáBORDERáCOLOR
DFBACK DS 1 ;DEFAULTáBACKGROUNDáCOLOR
DFFORG DS 1 ;DEFAULTáFOREGROUNDáCOLOR
ACBORD DS 1 ;ACTUALáTEXTáBORDER
ACBACK DS 1 ;ACTUALáTEXTáBACKGROUND
KEYLEN DS 16 ;LENGTHSáOFáFUNC.KEYáDEF'S
KLEN DS 1 ;#áOFáCHARSáLEFTáOFáDEF.
KPNT DS 2 ;PNTáTOáKEYáDEF
DEFINP DS 1 ;SELECTáINPUTáFLAG
HZ50 DS 1 ;0=á60áHZ,á1=á50áHZáTOD
DS 17 ;RESERVEDáFORáFUTUREáUSE
MTO = *
*áSUBROUTINESáTOáUSEáINáASSEMBLER
*áCODEDáSUBROUTINESáINáCOMAL:
COLD DS 3 ;COLDáSTARTáOFáCOMAL
WARM DS 3 ;WARMáSTARTáOFáCOMAL
CALL DS 3 ;JSRáTOáANOTHERáPAGE.
GOTO DS 3 ;JMPáTOáANOTHERáPAGE.
LOAD DS 3 ;LOADáFROMáPAGEX
STORE DS 3 ;STOREáTOáPAGEX
EXEC DS 3 ;JSRáTOáPAGEX
LDAC1 DS 3 ;LOADáAC1
LDAC2 DS 3 ;LOADáAC2
FNDPAR DS 3 ;FINDáPARAMETERá(ASM.CALLS)
COPY DS 9 ;COPYáAREAáTOWARDSáLOWERáADDRESSES
COPYDN DS 9 ;COPYáAREAáTOWARDSáHIGHERáADDRESSES
FPADD DS 3 ;LOADáAC2áANDáADDáAC2áTOáAC1
FPADD2 DS 9 ;ADDáAC2áTOáAC1
FPAHF DS 9 ;ADDá0.5áTOáAC1
FPSUB DS 3 ;LOADáAC2áANDáSUBáAC2áFROMáAC1
FPSUB2 DS 9 ;SUBáAC2áFROMáAC1
FPMUL DS 3 ;LOADáAC2áANDáMULáAC2áBYáAC1
FPMUL2 DS 9 ;MULáAC2áBYáAC1
FPDIV DS 3 ;LOADáAC2áANDáDIVáAC2áBYáAC1
FPDIV2 DS 9 ;DIVáAC2áBYáAC1
MUL10 DS 9 ;MULTIPLYáAC1áBYá10.0
DIV10 DS 9 ;DIVIDEáAC1áBYá10.0
STAC1 DS 3 ;STOREáAC1
C1T2 DS 9 ;COPYáAC1áTOáAC2
C2T1 DS 9 ;COPYáAC2áTOáAC1
FPNEG DS 9 ;NEGATEáAC1
FPSGN DS 9 ;SIGNáOFáAC1
FPSIN DS 9 ;SINEáOFáAC1
FPCOS DS 9 ;COSINEáOFáAC1
FPSQR DS 9 ;SQUAREáROOTáOFáAC1
FPTAN DS 9 ;TANGENTáOFáAC1
FPPOW DS 9 ;RAISEáAC2áTOáTHEáPOWERáOFáAC1
FPATN DS 9 ;ARCTANGENTáOFáAC1
FPEXP DS 9 ;RAISEáAC1áTOáTHEáPOWERáOFáE
FPLOG DS 9 ;LOGARITHMáBASEáEáOFáAC1
FPRND DS 9 ;COMPUTEáPSEUDO-RANDOMáNUMBERá(RANGEá0áTOá1)
FPCOM DS 9 ;COMPAREáNUMBERáTOáAC1
TRUNC DS 9 ;CONVERTáAC1áINTOáINTEGERá(-32768á..á32767)
FPINT = TRUNC
FPINTG DS 9 ;CONVERTáAC1áINTOáINTEGERá(-2^24á..á2^24-1)
FPINTA DS 9 ;CONVERTáAC1áINTOáINTEGERá(0á..á65535)
INTFP DS 9 ;CONVERTáINTEGERáINTOáFPáINáAC1
FPASC DS 9 ;CONVERTáAC1áINTOáASCIIáEQUIVALENTá(STR$)
VAL DS 6 ;CONVERTáDECIMALáSTRINGáINTOáBINARYáINáAC1
POPA1 DS 9 ;POPáAC1
POPA2 DS 9 ;POPáAC2
PUSHA1 DS 9 ;PUSHáAC1
PUSHRL DS 9 ;PUSHáREALáNUMBER
PSHINT DS 9 ;FLOATá&áPUSHáINTEGERá(-32768á..á32767)
INTFPA DS 9 ;FLOATá&áPUSHáINTEGERá(0á..á65535)
EXCGST DS 9 ;ALLOCATEáLOCALáSTORAGE
EXCREM DS 9 ;RECLAIMáLOCALáSTORAGE
RESTOP DS 9 ;ALLOCATEáGLOBALáSTORAGE
RUNERR DS 6 ;GOáTOáCOMALáERRORáHANDLER
CRDT DS 3 ;READáCHARACTER
SPACE DS 2 ;WRITEáSPACE
CWRT DS 3 ;WRITEáCHARACTER
CCHKIN DS 3 ;SELECTáINPUTáFILE
CCKOUT DS 3 ;SELECTáOUTPUTáFILE
CCLRCH DS 3 ;CLEARáCHANNEL
CFNAME DS 7 ;PARSEá&áCOPYáFILEáNAME
COPEN DS 3 ;OPENáFILE
CCLOSE DS 3 ;CLOSEáFILE
CRLF DS 3 ;OUTPUTáCRáANDáLF
GETLIN DS 7 ;INPUTáKEYBOARDáLINE
RESET DS 6 ;RESETáPROGRAMáPOINTERS
DUMMY DS 1 ;EMPTYáSUBROUTINEá(RTS)
COMAL DS 6 ;GOáTOáCOMALáEDITOR
EXCUTE DS 7 ;EXECUTEáCODEáINáCDBUF
JLOAD DS 7 ;LOADáCOMALáPROGRAM
ARRLEN DS 7 ;COMPUTEáNO.áOFáELEMENTSáINáARRAY
ORG $D000
*á6566áVIDEOáINTERFACEáCONTROLLER
VIC = *
SPRPOS DS 16 ;SPRITESá0-7ááXá&áYáPOS
SPRXPS DS 1 ;SPRITESá0-7ááX-POSá(MSBáOFáX-COORD.)
VCTRL1 DS 1 ;VICáCONTROLáREGISTER
RWRAST DS 1 ;READ/WRITEáRASTERáVALUEáFORáCOMPAREáIRQ
PENX DS 1 ;LIGHT-PENáLATCHáX-POS
PENY DS 1 ;LIGHT-PENáLATCHáY-POS
SPRDSP DS 1 ;SPRITEáDISPLAYáENABLE
VCTRL2 DS 1 ;VICáCONTROLáREGISTER
SPRYEX DS 1 ;SPRITESá0-7áEXPANDá2*VERTICALá(Y)
VCTRL3 DS 1 ;VICáMEMORYáCONTROLáREGISTER
IRQOCC DS 1 ;VICáINTERRUPTáFLAGáREGISTER
IRQMSK DS 1 ;IRQáMASKáREGISTER
SPRBDP DS 1 ;SPRITEáTOáBACKGROUNDáDISPLAYáPRIORITY
SPRMCM DS 1 ;SPRITESá0-7áMULTI-COLORáMODEáSELECT
SPRXEX DS 1 ;SPRITESá0-7áEXPANDá2*HORIZONTALá(X)
SPRSPR DS 1 ;SPRITEáTOáSPRITEáCOLLISIONáDETECT
SPRBCK DS 1 ;SPRITEáTOáBACKGROUNDáCOLLISIONáDETECT
BORCOL DS 1 ;BORDERáCOLOR
BCKCOL DS 4 ;BACKGROUNDáCOLORá0-3
SPRMCL DS 2 ;SPRITEáMULTI-COLORáREGISTERá0-1
SPRCOL DS 8 ;SPRITEá0-7áCOLOR
ORG $D400
*á6581áSOUNDáINTERFACEáDEVICE
SID = * ;VOICEá1:
V1FREQ DS 2 ;ááFREQUENCYáCONTROL
V1PWW DS 2 ;ááPULSEáWAVEFORMáWIDTH
V1CTRL DS 1 ;ááCONTROLáREGISTER
V1ENVL DS 2 ;ááENVELOPEáGENERATORá(ADSR)
;VOICEá2
V2FREQ DS 2 ;ááFREQUENCYáCONTROL
V2PWW DS 2 ;ááPULSEáWAVEFORMáWIDTH
V2CTRL DS 1 ;ááCONTROLáREGISTER
V2ENVL DS 2 ;ááENVELOPEáGENERATORá(ADSR)
;VOICEá3:
V3FREQ DS 2 ;ááFREQUENCYáCONTROL
V3PWW DS 2 ;ááPULSEáWAVEFORMáWIDTH
V3CTRL DS 1 ;ááCONTROLáREGISTER
V3ENVL DS 2 ;ááENVELOPEáGENERATORá(ADSR)
;FILTERS:
FCUTOF DS 2 ;ááFILTERáCUTOFFáFREQUENCY
FRESON DS 1 ;ááFILTERáRESONANCE/VOICEáINPUTáCONTROL
FMOVOL DS 1 ;ááSELECTáFILTERáMODEáANDáVOLUME
PADDL1 DS 1 ;A/D-CONVERTER:áGAMEáPADDLEá1
PADDL2 DS 1 ;A/D-CONVERTER:áGAMEáPADDLEá2
OSC DS 1 ;OSCILLATORá3áRANDOMáNUMBERáGENERATOR
ENV DS 1 ;ENVELOPEáGENERATORá3áOUTPUT
ORG $D500
SIDIMG DS 768 ;SIDáIMAGES
COLRAM DS SCSIZE+24 ;COLORáRAMá(NYBBLES)
ORG $DC00
*á6526áCOMPLEXáINTERFACEáADAPTERá#1
COLM = * ;KEYBOARDáMATRIX
D1PRA DS 1
ROWS = * ;KEYBOARDáMATRIX
D1PRB DS 1
D1DDRA DS 1
D1DDRB DS 1
D1T1L DS 1
D1T1H DS 1
D1T2L DS 1
D1T2H DS 1
D1TOD1 DS 1
D1TODS DS 1
D1TODM DS 1
D1TODH DS 1
D1SDR DS 1
D1ICR DS 1
D1CRA DS 1
D1CRB DS 1
ORG $DD00
*á6526áCOMPLEXáINTERFACEáADAPTERá#2
D2PRA DS 1
D2PRB DS 1
D2DDRA DS 1
D2DDRB DS 1
D2T1L DS 1
D2T1H DS 1
D2T2L DS 1
D2T2H DS 1
D2TOD1 DS 1
D2TODS DS 1
D2TODM DS 1
D2TODH DS 1
D2SDR DS 1
S2ICR DS 1
D2CRA DS 1
D2CRB DS 1
ORG $DE00
OVRLAY DS 256 ;OVERLAYáCONTROLáPORT
*áKERNALáJUMPáTABLE
ORG $FF81
CINT DS 3 ;INITáSCREENáEDITOR
IOINIT DS 3 ;INITáI/O
RAMTAS DS 3 ;INITáRAM
RESTOR DS 3 ;RESTOREáDEFAULTáI/OáVECTORS
VECTOR DS 3 ;READ/SETáVECTOREDáI/O
SETMSG DS 3 ;CONTROLáKERNALáMESSAGES
SECOND DS 3 ;SENDáSAáAFTERáLISTEN
TKSA DS 3 ;SENDáSAáAFTERáTALK
MEMTOP DS 3 ;READ/SETáTOPáOFáMEMORY
MEMBOT DS 3 ;READ/SETáBOTTOMáOFáMEMORY
SCNKEY DS 3 ;SCANáKEYBOARD
SETTMO DS 3 ;SETáTIMEOUTáDEFEAT
ACPTR DS 3 ;INPUTáBYTEáFROMáSERIALáPORT
CIOUT DS 3 ;OUTPUTáBYTEáTOááSERIALáPORT
UNTLK DS 3 ;COMMANDáDEVICEáTOáUNTALK
UNLSN DS 3 ;COMMANDáDEVICEáTOáUNLISTEN
LISTN DS 3 ;COMMANDáDEVICEáTOáLISTEN
TALK DS 3 ;COMMANDSáDEVICEáTOáTALK
RDSTAT DS 3 ;READáI/OáSTATUSáWORD
SETLFS DS 3 ;SETáLOGICAL,áFIRST,áANDáSECONDáADDR.
SETNAM DS 3 ;SETáFILEáNAME
OPEN DS 3 ;OPENáLOGICALáFILE
CLOSE DS 3 ;CLOSEáLOGICALáFILE
CHKIN DS 3 ;OPENáCHANNELáFORáINPUT
CHKOUT DS 3 ;OPENáCHANNELáFORáOUTPUT
CKOUT = CHKOUT
CLRCHN DS 3 ;CLOSEáI/OáCHANNELS
CLRCH = CLRCHN
CHRIN DS 3 ;INPUTáCHARáFROMáCHANNEL
RDT = CHRIN
CHROUT DS 3 ;OUTPUTáCHARáTOáCHANNEL
WRT = CHROUT
LOADF DS 3 ;LOADáRAMáFROMáAáDEVICE
SAVEF DS 3 ;SAVEáRAMáTOáDEVICE
SETTIM DS 3 ;SETáREALáTIMEáCLOCK
RDTIM DS 3 ;READáREALáTIMEáCLOCK
STOP DS 3 ;SCANáSTOPáKEY
GET DS 3 ;GETáCHARáFROMáKEYBOARDáBUFFER
CLALL DS 3 ;CLOSEáALLáCHANNELSáANDáFILES
UDTIM DS 3 ;INC.áREALáTIMEáCLOCK
SCREN DS 3 ;RETURNáROW,COLUMNáOFáCURSOR
PLOT DS 3 ;READ/SETáROW,COLUMNáFORáCURSOR
IOBASE DS 3 ;RETURNSáBASEáADDRESSáOFáI/OáDEVICES
SKIP = $2C ;OPCODEáFORá'BITá<ABS>'á(SKIPá2áBYTES)
ORG $FFFA
CNMI DS 2 ;NON-MASKABLEáINTERRUPTáVECTOR
CRESET DS 2 ;SYSTEMáRESETáVECTOR
CIRQ DS 2 ;INTERRUPTáREQUESTáVECTOR
á ast 60
*áFORáUSEáINáASSEMBLERáCODEDáSUBROUTINESáINáCOMAL:
*áLABELSáFORáPROC/FUNCáDEFINITIONS
CART = %10000000 ;10XRXPPPá(INáCARTRIDGEáATá$8000-$BFFF)
C64 = %01000111 ;01XRXPPPá(INáC64áááááááATá$0900-$FFFF)
ROMMED = %00010000
DEFPAG = C64-LORAM
PROC = 112
ENDPRC = 126
FUNC = 227
ENDFNC = 126
PARAM = 114
VALUE = PARAM+0
REF = PARAM+3
ARRAY = 6
REAL = 0
INT = 1
STR = 2
*áSIGNALáTYPES:
POWER1 = 0 ;POWERáUPáSEIá(ONLYáFORáROMMEDáLIBRARIES)
POWER2 = 1 ;POWERáUPáCLIá(ONLYáFORáROMMEDáLIBRARIES)
LINK = 2 ;AFTERáLINK/LOAD-COMMANDá(ONLYáLIBRARYáJUSTáLINKED)
DSCRD = 3 ;BEFOREáDISCARD-COMMAND
NEW = 4 ;AFTERáNEW-COMMANDáORáBADáLOAD/RUN/CHAIN
CLRTAB = 5 ;AFTERáNAMEáTABLEáISáCLEARED
RUN = 6 ;BEFOREáRUN/CHAIN
WARM1 = 7 ;WARMáSTARTáSEI
CON = 8 ;BEFOREáCONTINUATIONá(CONáCOMMAND)
ERROR = 9 ;AFTERáERRORáMESSAGEáPRINTED
STOP1 = 10 ;AFTERáSTOP/END
BASIC = 11 ;BEFOREáLEAVINGáCOMAL
DEND